package com.dtsheep.rxjava.stduy.observable;

import rx.Observable;

/**
 * CacheDemo
 *
 * <p>
 *     Cache 操作符
 * </p>
 *
 * @author chuanbai
 * @date 2024/5/18
 */
public class CacheDemo {


    /**
     * 两次订阅都会独立地接收到 Observable 发出的所有项，即使这些项已经被第一个订阅者接收过。
     * 这是因为每次订阅都是对 Observable 的一个独立请求，冷 Observable 会为每个订阅者重新执行发射过程。
     *
     * @param
     * @return
     * @author chuanbai
     * @date ${DATE}
     */
    public void cache01(){

        // 每次订阅都会重新发射

        Observable<String> observable = Observable.just("1", "2", "3");
        System.out.println("第一次订阅开始===");
        observable.subscribe(obj-> System.out.println(obj));
        System.out.println("第二次订阅开始===");
        observable.subscribe(obj -> System.out.println(obj));

        // 缓存
        Observable<String> cache = observable.cache();
        System.out.println("缓存的===");
        cache.subscribe(obj-> System.out.println(obj));
    }

    public static void main(String[] args) {
        CacheDemo cacheDemo = new CacheDemo();
        cacheDemo.cache01();
    }
}
